package sistema.controleVendas.persistencia;

import java.util.List;

import javax.persistence.EntityManager;

import sistema.controleVendas.entidades.Bairro;
import sistema.controleVendas.entidades.Cidade;
import sistema.controleVendas.entidades.Endereco;

public class GerenciarEnderecosPersistencia {
	EntityManager em = Conexao.contectar();
	public void adicionarEndereco(Endereco endereco){
		em.getTransaction().begin();
		em.persist(endereco);
		em.getTransaction().commit();
	}
	public void atualizarEndereco(Endereco endereco){
		em.getTransaction().begin();
		em.persist(endereco);
		em.getTransaction().commit();
	}
	public void removerEndereco(Endereco endereco){
		em.getTransaction().begin();
		em.remove(endereco);
		em.getTransaction().commit();
	}
	public List<Endereco> listarTodosEnderecos(){
		List<Endereco> enderecos = em.createQuery("Select e From Endereco e")
		.getResultList();
		return enderecos;
	}
	public List<Endereco> listarEnderecoPorCep(Endereco endereco){
		List<Endereco> enderecos = em.createQuery("Select e From Endereco e Where e.cep=:param")
		.setParameter("param", endereco.getCep())
		.getResultList();
		return enderecos;
	}
	public List<Endereco> listarEnderecoPorBairro (Bairro bairro){
		List<Endereco> enderecos = em.createQuery("Select e From Endereco e Where e.bairro.id=:param")
		.setParameter("param", bairro.getId())
		.getResultList();
		return enderecos;
	}
	public List<Endereco> listarPorCidade(Cidade cidade){
		List<Endereco> enderecos = em.createQuery("Select e From Endereco e Where e.cidade.id=:param")
		.setParameter("param", cidade.getId())
		.getResultList();
		return enderecos;
	}
	public Endereco buscarEndereco(Endereco endereco){
		Endereco end = (Endereco)em.createQuery("Select e From Endereco e Where e.id=:param")
		.setParameter("param", endereco.getId()).getSingleResult();
		return end;
	}

}
